/**
 * 通用工具函数
 */

/**
 * 根据路由设置文档标题
 * @param {Object} route - 路由对象
 */
export function setTitleFromRoute(route) {
  const title = route.meta?.title
  const appTitle = '货物监控系统'
  
  document.title = title ? `${title} - ${appTitle}` : appTitle
}

/**
 * 防抖函数
 * @param {Function} fn - 要执行的函数
 * @param {Number} delay - 延迟时间，默认200ms
 * @returns {Function} - 防抖后的函数
 */
export function debounce(fn, delay = 200) {
  let timer = null
  return function(...args) {
    if (timer) clearTimeout(timer)
    timer = setTimeout(() => {
      fn.apply(this, args)
    }, delay)
  }
}

/**
 * 节流函数
 * @param {Function} fn - 要执行的函数
 * @param {Number} interval - 间隔时间，默认200ms
 * @returns {Function} - 节流后的函数
 */
export function throttle(fn, interval = 200) {
  let lastTime = 0
  return function(...args) {
    const now = Date.now()
    if (now - lastTime >= interval) {
      lastTime = now
      fn.apply(this, args)
    }
  }
}

/**
 * 深拷贝对象
 * @param {Object} obj - 要拷贝的对象
 * @returns {Object} - 拷贝后的对象
 */
export function deepClone(obj) {
  if (obj === null || typeof obj !== 'object') return obj
  const clone = Array.isArray(obj) ? [] : {}
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      clone[key] = deepClone(obj[key])
    }
  }
  return clone
}
